Partition real = "irisReal.txt" // Inicialização na declaração
array(5) Partition partitions // Vetor de partições que vão ser lidas de um diretório
array(5, 5) Real crs // Matriz de CRs calculados entre todas as partições
array(5) Real crsRealWithPartition // Matriz de CRs calculados entre uma partição e a partição real
Int i
Int x
Real m

// Carregar todos os arquivos de um diretório como partições
for(file f: "sub") {
	partitions.add(f) 
}

// For estilo C/Java, que calcula os CRs entre as partições e partição real
for (i = 0; i < 5; i += 1) {
	print("Partition ", i, ": ", partitions[i], "\n")
	crsRealWithPartition.add(calcCR(partitions[i], real))
	print("\t", "CR to real: ", crsRealWithPartition[i], "\n")
}

// Uso de mean
m = calcMean(crsRealWithPartition)
print("\nMean CR between partitions and real data:", m, "\n")

crs = calcCR(partitions)
print("\nCRs:\n")
print(crs, "\n")

// Aqui procuramos todas as partições que são iguais entre si, ou seja, cujo CR seja 1 e imprimimos.
// Como não temos if na linguagem, não podemos imprimir de forma clara.
print("List of partitions that have equal CRs in each line:\n")
forall i (0, partitions.size()) {
	// Uso de findSimilar
	print("line", i, ":", findSimilar(crs, i, 1), "\n")
}

// Removemos todas as partições, com a de maior CR sendo removida primeiro até que todas sejam removidas.
print("\nNow we will remove all partitions, starting from the one with the highest CR\n\n")
for (partitions) {
	// Uso de highestCR
	x = highestCR(crsRealWithPartition)
	print("Removing partition", x, "with CR", crsRealWithPartition[x], "\n")
	// Uso de for aninhado
	for (i = 0; i < 5; i += 1) {
		print("Partition ", i, ": ", partitions[i], "\n")
	}
	// Uso de delete
	partitions.delete([x])
	crsRealWithPartition.delete([x])
	print("\n")
}
print("Nothing left in partitions list. Now we're going to delete all calculated CRs.\n")

// Agora zeramos a matriz de CRs
print("\nCRs:\n")
for (i = 0; i < 5; i += 1) {
	for (x = 0; x < 5; x += 1) {
		crs.delete([i, x])	
	}
}
print(crs)
